package com.douya.pangu.business.api.pojo.dto;


import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

/**
 * 说明：http请求日志的提交对象
 *
 * @author hcy
 * @date 2024/04/01
 */
@Data
@Accessors(chain = true)
public class BusinessHttpLogDTO{

    /**
     * ID
     */
    Long id;

    /**
     * 请求路径
     */
    @Size(max = 512, message = "请求路径长度必须{max}个字符以内")
    String path;

    /**
     * 请求请求参数(包括链接地址参数和表单提交参数)
     */
    @Size(max = 65535, message = "请求请求参数(包括链接地址参数和表单提交参数)长度必须{max}个字符以内")
    String parameterMap;

    /**
     * 请求token
     */
    @Size(max = 512, message = "请求token长度必须{max}个字符以内")
    String token;

    /**
     * 用户id
     */
    @Min(value = 0, message = "用户id不能小于{value}")
    Long userId;

    /**
     * 请求方法
     */
    @Size(max = 32, message = "请求方法长度必须{max}个字符以内")
    String method;

    /**
     * 相应状态
     */
    @Min(value = 0, message = "相应状态不能小于{value}")
    Integer status;

    /**
     * 请求者ip地址
     */
    @Size(max = 64, message = "请求者ip地址长度必须{max}个字符以内")
    String ipAddr;

    /**
     * 调用微服务名称
     */
    @Size(max = 64, message = "调用微服务名称长度必须{max}个字符以内")
    String applicationName;

    /**
     * 请求耗费时长
     */
    @Min(value = 0, message = "请求耗费时长不能小于{value}")
    Integer timeTaken;

    /**
     * 请求体内容
     */
    @Size(max = 65535, message = "请求体内容长度必须{max}个字符以内")
    String requestBody;

    /**
     * 响应体内容
     */
    @Size(max = 65535, message = "响应体内容长度必须{max}个字符以内")
    String responseBody;

    /**
     * 请求时间
     */
    @NotNull(message = "请求时间不能为空")
    LocalDateTime requestTime;

    /**
     * 备注
     */
    @Size(max = 1024, message = "备注长度必须{max}个字符以内")
    String remarks;
}
